package com.zlyx.easy.database.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 
 * @Auth 赵光
 * @Describle
 * @2018年12月22日 下午4:37:56
 */
@Target({ ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface EasySelect {
	
	public final static String PAGENUM = "pageNum";
	
	public final static String PAGSIZE = "pageSize";
	
	/**
	 * 数据库表名
	 * @return
	 */
	String tableName();
	
	/**
	 * 结果集
	 * @return
	 */
	String[] results() default Table.FILED_ALL;
	
	
	/**
	 * 关联查询表
	 * @return
	 */
	Table[] tables() default @Table(tableName = "");
	
	/**
	 * 查询条件声明
	 * @return
	 */
	Condition[] conditions() default @Condition(fields = { "" }, tableName = "");	
	
	/**
	 * 追加SQL条件语句(当@Condition数组注解无法完成你想要的SQL效果时使用):
	 *     1. 你可以像使用mybatis一样写sql语句,用${name}或#{name}这样的方式来声明占位符
	 *     2. 多个条件语句会以"or"关键字进行分割
	 *     3. condition()条件和conditions()中的条件是"and"的关系
	 * @return
	 */
	String[] condition() default "";
    
	/**
	 * 分页(需要在参数中存在两个参数:pageNum(当前页数)和pageSize(分页大小))
	 * @return
	 */
	boolean page() default false;
	
	/**
	 * 作用描述
	 * @return
	 */
	String[] todo() default "";
		
}
